/** @file
 * Declaration of 2D vector class
 */

#ifndef WII_GI_C_VECTOR_2D_H
#define WII_GI_C_VECTOR_2D_H

namespace wiigi
{
   template< typename Type >
   class c_Vector2d
   {
      public:
         c_Vector2d()
         {
            setValues( 0, 0 );
            
            return;
         }
         
         c_Vector2d( Type X, Type Y )
         {
            setValues( X, Y );
            
            return;
         }
         
         c_Vector2d( const c_Vector2d& Src )
         {
            setValues( Src.getX(), Src.getY() );
            
            return;
         }
         
         c_Vector2d& operator=( const c_Vector2d& Src )
         {
            setValues( Src.getX(), Src.getY() );
            
            return *this;
         }
         
         void setValues( Type X, Type Y )
         {
            m_X = X;
            m_Y = Y;
            
            return;
         }
         
         Type getX( void ) const
         {
            return m_X;
         }
         
         Type getY( void ) const
         {
            return m_Y;
         }
         
      protected:
         Type m_X;
         Type m_Y;      
      
   };
   
   typedef c_Vector2d< u32 > c_u32Vector2d;
   typedef c_Vector2d< f32 > c_f32Vector2d;
   
}



#endif

